package io.stn;

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
/*
 * 선생님이 과제를 주면 먼저 로직을 생각하자.
 * 무엇이 필요한가?
 * 1. 입출력 준비
 * 2. 입출력 연결
 * 3. 필요한 작업
 * 4. 연결 끊기
 * 
 */


public class ConsoleMemo {

	public static void main(String[] args) throws IOException {
		//1. 첫 화면에 보여줄 화면 세팅
		System.out.println("파일명을 입력하세요. C:\\temp에 저장됩니다.");
		System.out.println("파일명 : ");

		// 2. 입출력 준비 단계
		// 2-1. 내가 라인 단위로 어떤 타입의 데이터를 인풋하고 아웃풋 할지를 결정하고 그에 맞는 노드와 필터를 결정
		
		BufferedReader br = null;
		PrintWriter pw = null;

		try {
			// 3. 입출력 스트림을 외부 자원과 연결
			br = new BufferedReader(new InputStreamReader(System.in));
			//라인 단위로 케릭터 데이터를 사용자로부터 시스템으로 입력 받기 위한 노드와 필터 세팅
		
			pw = new PrintWriter("c:\\temp\\" + br.readLine());
			//케릭터 데이터를 OutPut하는 PrintWriter 필터를 사용하여 파일이 저장될 경로와 파일명을 입력 받는 코드
			//br.readLine 은 바로 34번 코드에서 생성한 대로 라인단위의 케릭터 값을 시스템에 입력한다.

			//  3-1. 파일경로 및 파일명 생성 완료
			

			// 3-2. 본문 내용 입출력을 위한 화면 세팅
			System.out.println("글을 입력하세요. 종료를 원하면 Ctrl - z를 입력하세요!");

			//3-3. 라인 단위로 외부자원인 키보드로부터 입력받을 값을 스트링 값으로 저장
			String str = br.readLine();
			
			//3-4. 어떤 값도 입력되지 않을 때까지
			while (str != null) {
				
				//str로 Input된 스트링 데이터를 PrintWriter에 println메소드를 통해 처음 생성자를 통해 입력된 경로값으로 Output처리됨
				pw.println(str);
				str = br.readLine();
				//한줄 한줄 input 받은 값을 output하는 작업을 반복, 아무값도 입력되지 않을때까지 반복한다.
			}
			
			// 4. 입출력 종료
		} finally {
			if (pw != null)
				pw.close();
			if (br != null)
				br.close();
		}

	}
}
